import math

D = 3  # Диаметр отсека в м
L = 1.3  # Длина отсека в м

delta_lon = 1.2 / 1000  # толщина обшивки, м

B = 70 / 1000  # ширина лонжерона, м
N = 4000 * 1000  # Сжимающая сила в Н
M = 700 * 1000  # Крутящий момент в Н*м
h = 0.003  # толщина профиля, м
E = 72000 * 10**6  # Модуль Юнга материала в Па
Ro = 2700  # плотность материала, кг/м3
sigma_t = 280 * 10**6  # предел текучести, Па
sigma_v = 400 * 10**6  # предел прочности, Па

f = 1.1  # коэффициент безопасности

Ne_lon = math.ceil(N + 4 * M / D)  # Эквивалентная нагрузка, Н


Nr_lon = f * Ne_lon  # Расчётная нагрузка, Н


var_sig = 0.7

sigma_lon = sigma_t * var_sig  # разрушающее напряжение для лонжерона, Па

b_pr_lon = 1.9 * delta_lon * math.sqrt(E / sigma_lon)  # расстояние между лонжеронами, м

Pr_obsh = B + 0.012 + b_pr_lon  # длина присоединенной обшивки, м
s_pr = Pr_obsh * delta_lon  # площадь приоединенной обшивки, кв м

n_lon = 48  # кол-во лонжеронов выбирается от лампочки
N_lon = (
    Nr_lon - n_lon * s_pr * sigma_lon
) / n_lon  # нагрузка, действующая на лонжерон, Н
F_lon = N_lon / sigma_lon  # площадь лонжерона, кв м
H_lon = (F_lon - 0.012 * h * 2 - B * h) / h + 2 * h  # высота лонжерона

# проверка на устойчивость
sigma_kr_mestn = (
    0.9 * 4 * E * (h / B) ** 2
)  # критическое напряжение потери местной устойчивости, МПа
# print(sigma_kr_mestn)
# не помню, почему так, но это напряжение должно быть больше действующего
y_lon = (F_lon * (H_lon + delta_lon) / 2 + s_pr * delta_lon / 2) / (
    F_lon + s_pr
)  # координата нейтральной линии лонжерона, м                                     ВЫВОД
Jx = (
    (2 * h * (H_lon - 2 * h) ** 3) / 12
    + (B * (h**3)) / 12
    + 2 * (0.012 + h) * (h**3) / 12
)  # момент инерции сечения, м4
J_lon = (
    Jx
    + F_lon * ((H_lon + delta_lon) / 2 - y_lon) ** 2
    + s_pr * (y_lon - delta_lon / 2) ** 2
)  # момент инерции лонжерона, м4
lyambda_lon = L / math.sqrt(J_lon / (F_lon + s_pr))  # гибкость
# проверка на общую устойчивость (по Эйлеру)
sigma_kr = (
    2 * math.pi**2 * E / lyambda_lon**2
)  # критическрое напряжение потери устойчивости
etta = (
    sigma_kr / sigma_lon
)  # коэффициент запаса по устойчивости                    ВЫВОД
SQR_LONG = (
    F_lon + s_pr
) * n_lon  #                                                                       ВЫВОД
Mass = (
    SQR_LONG * L * Ro
)  #                                                                               ВЫВОД
